Skip to main content

Top K Frequent Elements

Question

Two bar problem

find best area among ....

""" Given an integer array "nums" and an integer "k", return the "k" most frequent elements. You may return the answer in any order.


Example 1:

Input: nums = [1,1,1,2,2,3], k = 2 Output: [1,2]


Example 2:

Input: nums = [1], k = 1 Output: [1]


Constraints:

1 <= nums.length <= 10^5 -10^4 <= nums[i] <= 10^4 k is in the range [1, the number of unique elements in the array]. It is guaranteed that the answer is unique.

====================================== Follow up: Your algorithm's time complexity must be better than O(n log n), where n is the array's size. """

Solution

heap/Top K Frequent Elements.py

import heapq
from collections import Counter


def get_most_frequent(arr, k):
h = []
m = Counter(arr)

for n, v in m.items():
heapq.heappush(h, (-1 * v, n))

ret = []
for i in range(k):
v, n = heapq.heappop(h)

ret.append(n)
#print(ret)


return ret


# print(get_most_frequent([1, 1, 1, 2, 2, 3], 2))
result = get_most_frequent([4, 4, 4, 5, 5, 5, 5, 2, 2, 1, 1, 1, 1, 1], 3)


#print(result)
Stepret
1[1, 5, 4]
2[1, 5, 4]
3[1, 5, 4]
result
[1, 5, 4]